package database

import (
	"fmt"
	"gopkg.in/ini.v1"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
	"log"
	"os"
)

var DB *gorm.DB

func InitMysql() {
	cfg, err := ini.Load("./conf/app.ini") // 加载app.ini文件
	if err != nil {
		fmt.Printf("fail to read file %v", err) // %v 会将err的字符串形式打印出来
		os.Exit(1)                              // 退出程序
	}
	// ini读取文件
	user := cfg.Section("mysql").Key("user").String()
	password := cfg.Section("mysql").Key("password").String()
	ip := cfg.Section("mysql").Key("ip").String()
	port := cfg.Section("mysql").Key("port").String()
	database := cfg.Section("mysql").Key("database").String()
	//字符串拼接
	var dsn string
	dsn = fmt.Sprintf("%v:%v@tcp(%v:%v)/%v?charset=utf8mb4&parseTime=True&loc=Local", user, password, ip, port, database)

	// 创建日志对象
	newLogger := logger.New(
		log.New(os.Stdout, "\r\n", log.Lshortfile),
		logger.Config{
			LogLevel: logger.Info,
		})
	// 获取gorm句柄
	DB, _ = gorm.Open(mysql.Open(dsn), &gorm.Config{
		Logger:                 newLogger,
		SkipDefaultTransaction: true, // 不开启事务, 性能提高30%
	})

	//自动迁移表
	migrateErr := DB.AutoMigrate()

	if migrateErr != nil {
		panic("error migrate db")
	}
}
